import pandas as pd
import matplotlib.pyplot as plt

# 1) 读取数据并查看数据类型
df = pd.read_csv('历史价格表.csv')
print(df.dtypes)

# 将日期字段转化为日期型
df['Date'] = pd.to_datetime(df['Date'])

# 2) 检查并填充缺失值
if df.isnull().values.any():
    missing_dates = df[df.isnull().any(axis=1)]['Date']
    df = df.fillna(method='ffill')  # 使用前一交易日的数据填充缺失值
    print("数据缺失的日期：")
    print(missing_dates)

# 3) 输出最高值、最低值及对应日期
max_price = df['High'].max()
min_price = df['Low'].min()
max_date = df[df['High'] == max_price]['Date'].values[0]
min_date = df[df['Low'] == min_price]['Date'].values[0]
print("最高价格：", max_price)
print("最高价格日期：", max_date)
print("最低价格：", min_price)
print("最低价格日期：", min_date)

# 4) 画出最高价格的折线图
plt.plot(df['Date'], df['High'])
plt.xlabel('Date')
plt.ylabel('High Price')
plt.title('Daily High Price of Game Coin')
plt.xticks(rotation=45)
plt.show()

# 5) 画出成交量的折线图（取对数）
plt.plot(df['Date'], df['Volume'].apply(lambda x: math.log(x)))
plt.xlabel('Date')
plt.ylabel('Log Volume')
plt.title('Daily Volume of Game Coin (Log Scale)')
plt.xticks(rotation=45)
plt.show()
